import { createStore } from 'vuex'
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { id } from 'element-plus/es/locales.mjs';
import { getToken, removeToken, setToken, isHaveToken, getCurrentUser, removeCurrentUser } from '@/utils/auth';
import { userPersonalInfo } from '@/api/user'

export default createStore({
  state: {
    // 是否加载中
    isLoading: false,
    // 是否登录
    isLogin: isHaveToken(),
    // 是否外部触发打开登录框
    openLogin: false,
    // 当前用户
    user: getCurrentUser(),
    // 是否外部触发打开登录框
    openLogin: false,
    // 热搜列表
    trendings: [{ 'content': '一个曾毅配了6个玲花～', 'type': 1 }, { 'content': '妈妈从小对我讲，不要早恋，遇到你以后，我决定不听妈妈的话了。', 'type': 1 }, { 'content': '爸爸的快乐我想象到了', 'type': 2 }, { 'content': '哥哥的女朋友只能由我来选', 'type': 2 }, { 'content': '我可以和你一起碎觉觉吗', 'type': 2 }, { 'content': '一周七休日天天星期日', 'type': 2 }],
    // 分类
    categories: [
      { 'id': '1', 'name': '番剧' }, { 'id': '2', 'name': '电影' }, { 'id': '3', 'name': '国创' }, { 'id': '4', 'name': '电视剧' }, { 'id': '4', 'name': '综艺' }, { 'id': '4', 'name': '纪录片' }, { 'id': '4', 'name': '动画' }, { 'id': '4', 'name': '游戏' }, { 'id': '4', 'name': '鬼畜' }, { 'id': '4', 'name': '音乐' }, { 'id': '4', 'name': '舞蹈' }, { 'id': '4', 'name': '影视' }, { 'id': '4', 'name': '娱乐' }, { 'id': '4', 'name': '知识' }, { 'id': '4', 'name': '科技' }, { 'id': '4', 'name': '美食' }, { 'id': '4', 'name': '生活' }, { 'id': '4', 'name': '汽车' }, { 'id': '4', 'name': '时尚' }, { 'id': '4', 'name': '运动' }, { 'id': '4', 'name': '动物圈' }, { 'id': '4', 'name': 'VLOG' }, { 'id': '4', 'name': '搞笑' }
    ],
    // 未读消息数 分别对应"reply"/"at"/"love"/"system"/"whisper"/"dynamic"
    msgUnread: [0, 0, 0, 0, 0, 0],
    // 访问用户的收藏夹列表
    userFavList: [{ 'fid': 1, 'uid': 1, 'type': 1, 'visible': 1, 'title': '默认收藏夹', 'description': "最爱最爱", 'count': 19 },
    { 'fid': 2, 'uid': 1, 'type': 2, 'visible': 1, 'title': '我的最爱', 'description': "最爱最爱", 'count': 21 }
    ],
    // 轮播图列表
    carousels: [],
    danmuList: { "length": 1000 },
    // 用户与当前播放视频的互动数据 {love, unlove, coin, collect}
    attitudeToVideo: {},
    // 用户点赞的评论 id
    likeComment: [],
    // 用户点踩的评论 id
    dislikeComment: [],
    // 搜索到的相关数据数量 [视频, 用户]
    matchingCount: [0, 0],
  },
  mutations: {
    // 退出登录或登录过期时初始化个别数据
    initData(state) {
      state.isLogin = false;
      state.user = {};
      // ElMessage.success("退出成功");
    },
    // 更新登录状态
    updateIsLogin(state, isLogin) {
      state.isLogin = isLogin;
    },
    // 更新当前用户
    updateUser(state, user) {
      state.user = user;
      // console.log("更新vuex中用户信息: ", state.user);
    },
    // 更新轮播图列表
    updateCarousels(state, carousels) {
      state.carousels = carousels;
      // console.log("vuex中的轮播图: ", state.carousels);
    },
    updateFavorites(state, favorites) {
      state.userFavList = favorites;
      // console.log("vuex中的收藏夹列表: ", state.favorites);
    },
    // 更新搜索匹配数
    updateMatchingCount(state, matchingCount) {
      state.matchingCount[0] = matchingCount.videoCount;
      state.matchingCount[1] = matchingCount.userCount;
    },
    // 更新视频互动数据
    updateAttitudeToVideo(state, atv) {
      state.attitudeToVideo = atv;
      // console.log("vuex中的视频互动数据: ", state.attitudeToVideo);
    },
  },
  actions: {
    // 在这里定义你的异步操作方法
    // 退出登录
    logout(context) {
      // 先修改状态再发送请求，防止token过期导致退出失败
      context.commit("initData");
      removeCurrentUser();
      removeToken();
      // 清除本地token缓存
      // localStorage.removeItem("token");
    },
    // 获取当前用户信息
    async getPersonalInfo(context) {
      await userPersonalInfo().then(res => {
        if (res.code == 1) {
          context.commit("updateUser", res.data);
          context.state.isLogin = true;
        } else {
          removeToken();
          removeCurrentUser();
          context.commit("initData");
          // ElMessage.error("请登录后查看");
        }
      })
    },
  },
  modules: {
    // 在这里定义你的模块
  }
});
